Currently, both ink jet printers and laser printers are capable of producing full color images with high quality and precision. Such color printers are controlled by a printer driver program which provides an interface between an application program running on a host processor and the printer. Normally, a user creates a document using an application on the host computer and then calls for initiation of the printer driver program. In response to the users instituting a print command, the host computer transmits a series of page descriptions to the printer driver. The printer driver then proceeds to use built-in functions to rasterize the page description into a pixel map of a predefined resolution (e.g. 300 dots per inch, 600 dots per inch, etc.). The printer driver must also adjust the printed colors to math the screen colors as closely as possible.
Personal computers (PC's) use eight bit values to designate each primary color. To produce secondary colors, a PC uses combinations of the three eight bit values to control the computer's display device (e.g. a color CRT). A 24 bit value can represent 2.sup.24 different color values, which color values can be reproduced by appropriate control of the CRT's color electron guns. When a color printer is called upon to accurately reproduce that many color values, extensive color processing is required.
Thus, in order to reproduce a received color value, a color printer must convert the color value into a color command that is recognized by the printer engine. It was early realized that it was impractical to produce a color table map that mapped all 2.sup.24 possible PC-generated input colors to printer engine color codes.
Each pixel in the pixel map comprises, for instance, three eight-bit values corresponding to red, green and blue values derived from or for a display device in the host processor. The printer driver must adjust the color values in accordance with a predetermined calibration function so as to assure that the to-be-printed colors will appear the same as, or bear some preselected relation to, the colors displayed on the display device.
This is performed by a color management or mapping system that assures the colors produced by one product (a printer, scanner, monitor, film recorder, etc.) match or relate as desired to those produced on others. Color management systems typically have two components, "profiles" of individual color products that specify the color capabilities of the device, and software that runs on a host computer that uses this information to insure that the colors produced by one product match those produced by another. In cases where a particular color is not within the color gamut of a target device (i.e. the target device simply is incapable of reproducing the color), the color management software must provide the closest possible match. Device independent color is a term describing a computer system capable of reproducing a color accurately on any attached color device (printer, monitor, scanner, etc.). Device-independent color is usually implemented by developing "device profiles" that describe the colors a product can produce and by developing a color matching engine that uses the profiles to convert color data to assure a match between devices.
RGB is a color space that uses as its primary colors red, green, and blue. These three colors are the primary "additive" colors. In devices that use projected light to produce an image (for example, televisions or computer monitors), the complete spectrum of colors can be reproduced using red, green, and blue. Red and green combine to form yellow, red and blue to form magenta, green and blue to form cyan, and all three to form white. Any other shade can be produced by combining different amounts of the three primary colors.
CMYK is a color space that uses as its primary colors cyan, magenta, yellow and black. These four colors are the primary "subtractive" colors, that is, when printed on paper, the CMYK colors subtract some colors while reflecting others. Cyan and magenta combine to form blue, cyan and yellow to form green, magenta and yellow to form red, and in theory, all three to form black. However, it is sometimes difficult to get a satisfying black using a given set of cyan, magenta, and yellow pigments, so many reflective color-based products add a "true" black color, hence CMYK, not CMY. (To avoid confusion with blue, the letter K is used to represent black). The CMYK color set is sometimes called "process color."
In printing the printer uses the three subtractive primary colors. They are called subtractive because in each, one of the three additive colors has been subtracted from the white light. When red is subtracted, green and blue are left which combine to form the color cyan. When green is subtracted, red and blue are left which combine to form the color magenta. When blue is subtracted, red and green light combine to form the color yellow. The printer's subtractive primary colors are cyan, magenta, and yellow. The overprinting of all three in solid images yields black. The combination is black because each has subtracted one of the three additive primary components of white light and the complete absence of light is black.
Thus, the printer driver must convert the red, green and blue values to Cyan (C), Magenta (M), and Yellow (Y) values. As a result, each pixel is then represented by three eight-bit values which identify the corresponding levels of C,M,Y that will be used to subsequently control the print mechanism. An additional eight-bit value is supplied for a pixel black (K) dot to be applied at the pixel location.
Color printers can print one of eight colors at a particular pixel (red, green, blue, cyan, magenta, yellow, black, or white). However, the computer can request any one of 16 million colors. Therefore, it is necessary to produce a translation between 24-bit pixels (16 million colors) and 3-bit pixels (eight colors). This translation is called digtal halftoning. It is an integral part of color printing.
Digital halftoning refers to any process that creates the illusion of continuous tone images by judicious arrangement of binary picture elements, such as ink drops in the case of inkjet printers. Thus, halftoning is printing the simulation of a continuous-tone image, such as a shaded drawing or a photograph, with groups or cells of color or black dots. The dots are placed in such a way that they appear to the human eye to be a single color. Digital halftoning is sometimes called spatial dithering.
Printing presses and most printers use halftoning to render images. On printing presses, different size dots can be used to produce different shades of gray or color. Most color printers are binary in nature, in that they either apply a full color dot or no color dot to a pixel location. Such color printers do not employ a control mechanism to enable adjustment of the intensity of a particularly applied color dot. In binary printers, different patterns of identical dots are used to produce halftone images. As a result, a printer driver for a binary color printer employs a color digital halftoning process which reduces the 24 bit color information to 3 bits per pixel print position (1 bit for each of the C,Y, and M color planes).
Dithering can be used to reproduce gray shades using only black ink, or the full spectrum of color using only the process colors (cyan, magenta, yellow, black). For example, to produce green, a color printer lays down patterns of small yellow and cyan dots that appear to the eye to be green. There are many halftoning techniques, each with its own method for laying down dots. Examples include pattern dithering and error diffusion.
Pattern dithering uses a library of set patterns to reproduce a color (in color printing) or a gray shade (in monochrome printing). Pattern dithering can be characterized as ordered or random. Ordered dithers generally fall into one of two broad classes, dispersed, or clustered.
In dithering, a lot of work had been done to create the ideal "dither cell". This effort has been put into developing dither cells that have random or "blue noise" characteristics. Such "super-smooth" dither cells produce an image that appears almost as good as error diffused, but with the speed performance of a dither. See U.S. patent applications HALFTONE IMAGES USING PRINTED SYMBOLS MODELLING, by Qian Lin, Ser. No. 08/057,244, filed May 3, 1993; and HALFTONE IMAGES USING SPECIAL FILTERS, by Qian Lin, Ser. No. 08/060,285, filed May 11, 1993.
Dithers are implemented by use of a dither cell or dither matrix or threshold array, also called a mask, a two dimensional matrix of thresholds. Pixel values are compared to corresponding entries in the dither cell to determine if they should be turned on or off. In this way a shade of red for example can be converted to full red or no red. Many different approaches exist that vary the size of the cell and the distribution of the thresholds. Thus, halftoning is accomplished by a simple pointwise comparison of the input image against a predetermined threshold array or mask. For every point or pixel in the input image, depending on which point value is larger, the image or the mask, either a 1 or 0, respectively, is placed at the corresponding location in the binary output image.
Pattern dithering in general benefits from ease of implementation. Pattern dithering is computationally fast but does not offer the best possible reproduction quality. Error diffusion is a technique for laying down dots of the three process colors to produce the full spectrum of color. Error diffusion techniques use complex algorithms to lay down dots of color in a random rather than a repeated pattern, which improves the quality of the image. Error diffusion makes the best approximation it can for a given pixel, calculates how far that approximation is from the ideal and propagates this "error" to neighboring pixels. In this way a given pixel may not be particularly accurate, but the area is. In general, error diffusion generates much better print quality than dithering. However, typically, intense calculation is required to create the random pattern, so printing images using error diffusion is much slower than using pattern dithering.
Thus, halftoning algorithms can generally be evaluated in terms of speed of execution and resulting print quality. Often a tradeoff needs to be made between an algorithm that is fast but does not produce optimum print quality versus an alternative approach with better print quality that takes longer. So the problem each halftoning technique is trying to address is how to quickly produce a high print quality image. There is a continuing need to improve the clarity of color images produced by binary color printers without decreasing speed.
Accordingly, it is an object of this invention to provide a binary color printer with a means for improving print image clarity.
It is yet another object of this invention to provide a binary color printer with means for automatically determining whether black or secondary colors should be replaced with a combination of C,M or Y dots.
It is yet another object of this invention to provide a binary printer with an improved noise dither process that is adaptive in accordance with a characteristic of a color to be printed.